A short description of the post.
Global Setting
maptools is for creating spatial* objects
sf is for importing geospatial data
raster is for creating raster object
spatstat is for performing SPPA
tmap is for plotting thematic maps
tidyverse is for data handling
packages = c('maptools', 'sf', 'raster','spatstat', 'tmap','tidyverse','plotly','ggthemes' )
for (p in packages){
if(!require(p, character.only = T)){
install.packages(p)
}
library(p,character.only = T)
}
Importing shapefile using st_read() of sf package. The output object is in tittle sf object class.
mpsz_sf <- st_read(dsn = "data/shapefile",
layer = "MP14_SUBZONE_WEB_PL")
Reading layer `MP14_SUBZONE_WEB_PL' from data source
`C:\nxinyan\IS415\IS415_blog-1\_posts\2021-10-26-in-class-exercise-5\data\shapefile'
using driver `ESRI Shapefile'
Simple feature collection with 323 features and 15 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 2667.538 ymin: 15748.72 xmax: 56396.44 ymax: 50256.33
Projected CRS: SVY21
Projection is in SVY21
read_rds() of readr package is used instead of readRDS() of base R is used. This is because output of read_rds() is in tibble object
childcare <- read_rds("data/rds/childcare.rds")
CHAS <- read_rds("data/rds/CHAS.rds")
Note that there are some data issue in childcare data frame because Lat and Lng should be in numeric data type. The coordinate fields are in decimal degrees. Hence, wgs referencing system is assumed.
CHAS_sf <- st_as_sf(CHAS,
coords = c("X_COORDINATE",
"Y_COORDINATE"),
crs=3414)
Note: st_as_sf accept coordinates in character data type.
childcare_sf <- st_as_sf(childcare,
coords = c("Lng",
"Lat"),
crs=4326) %>%
st_transform(crs = 3414)
tmap_mode('view')
tm_shape(childcare_sf) +
tm_dots(alpha = 0.4,
col = "blue",
size = 0.05) +
tm_shape(CHAS_sf) +
tm_dots(alpha = 0.4,
col = "red",
size = 0.05)
as_Spatial() of sf package.
childcare <- as_Spatial(childcare_sf)
CHAS <- as_Spatial(CHAS_sf)
mpsz <- as_Spatial(mpsz_sf)
as.SpatialPoint() of as.SpatialPolygon() of maptools package
childcare_sp <- as(childcare, "SpatialPoints")
CHAS_sp <- as(CHAS, "SpatialPoints")
mpsz_sp <- as(mpsz, "SpatialPolygons")
Using as.ppp() of maptools package,
childcare_ppp <- as(childcare_sp, "ppp")
CHAS_ppp <- as(CHAS_sp, "ppp")
childcare_ppp_jit <- rjitter(childcare_ppp,
retry = TRUE,
nsim = 1,
drop = TRUE)
any(duplicated(childcare_ppp_jit))
[1] FALSE
CHAS_ppp_jit <- rjitter(CHAS_ppp,
retry = TRUE,
nsim = 1,
drop = TRUE)
any(duplicated(CHAS_ppp_jit))
[1] FALSE
pg <- mpsz[mpsz@data$PLN_AREA_N=="PUNGGOL",]
pg_sp <- as(pg, "SpatialPolygons")
pg_owin <- as(pg_sp, "owin")
childcare_pg <- childcare_ppp_jit[pg_owin]
CHAS_pg <- CHAS_ppp_jit[pg_owin]
plot(childcare_pg)

L_childcare <- envelope(childcare_pg,
Lest,
nsim=99,
rank=1,
global = TRUE)
Generating 99 simulations of CSR ...
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99.
Done.